The present invention relates generally to implementation of client-server networks. More particularly, the present invention provides systems and methods for maintaining the binding of a client, particularly a client with limited computational and storage resources, with at least one server.
The Internet has had a profound impact on the way society communicates. Today, the Internet is used for personal communications, for business communications, for shopping, for entertainment, for news, and more.
There are many applications that rely on a client being in constant contact with a server in order to perform a task. Typically, this requirement is constrained by several factors:                The client resides on a small specialized computer, with extremely limited computational and storage resources (herein, an “Internet Appliance”).        The client to server connection (binding) is mission critical and must be maintained constantly. A tolerable interruption in communications is approximately thirty-seconds within a one-hour interval.        To remove the potential for a “single point of failure” multiple servers must be deployed, geographically separated and independently addressable on the Internet. The number of servers could range into the hundreds.        There are expected to be millions of clients, to reduce the impact of a server failing and to maintain responsiveness of client/server bindings, clients must be distributed across all available servers.        The binding between client and server must be dynamic. There are many potential causes for a client to need to change the server to which it is bound.        
The need for a dynamic binding between a client and server is dictated by a number of factors. To insure that combined server resources are being allocated to provide optimal service to all clients, clients are distributed among servers. The distribution takes into account the “routing distance” between a client and the server (the number of Internet hops as well as message delivery latency). As more clients are added, the distribution may become sub-optimum and require adjustment, requiring in turn that some clients be redirected to different servers. Another benefit of dynamic binding between client and server is to provide for continuity of client services in the event a server fails or is pulled off-line for maintenance.
The traditional approach for a client to identify and then bind with a server relies on the Internet Distributed Name Service (DNS), which can associate a static list of Internet IP addresses with a name. While machines respond to IP addresses in the form of number strings, humans are not adept at remembering them. A name server receives a name from a client, associates the name with an IP address, and sends the IP address to a client. The client then communicates with a server via the server's IP address.
The DNS is, however, far from simple. DNS servers receive millions of requests each day. Because a single DNS server may not know the address associated with a particular name, DNS servers must also be able to contact other DNS servers. A name server would start its search for an IP address by contacting one of the root name servers. The root servers know the IP address for all of the name servers that handle the top-level domains. For example, a name server might “ask” a root server for the IP address associated with www.Yahoo.com, and the root might “respond” (assuming no caching), “I don't know the IP address for Yahoo.com, but here's the IP address for the COM name server.” One of the keys to making this work is redundancy. There are multiple name servers at every level, so if one fails, there are others to handle the requests.
To speed up the process, name servers cache the IP addresses returned in response to a request. Name servers do not cache forever, though. The caching has a component, called the Time To Live (TTL) that controls how long a server will cache a piece of information. When the server receives an IP address, it receives the TTL with it. The name server will cache the IP address for that period of time (ranging from minutes to days) and then discard it. The TTL allows changes in name servers to propagate.
Not all name servers respect the TTL they receive, however. This means that new information and old information may reside in the DNS at the same time. Sometimes, it takes weeks for a change in an IP address to propagate throughout the Web. Additionally, implementing the DNS protocol on the Internet Appliance requires additional computational, program storage and data storage resources that may not be available or desirable to add.
What would be useful is a system and method for permitting a client running on an Internet Appliance to dynamically bind with at least one server without using DNS.